package models

import (
	"gorm.io/gorm"
	"time"
)

// Log 日志模型
type Log struct {
	gorm.Model
	UserID        int    `json:"user_id" gorm:"index"`                    // 操作用户ID，0表示系统日志
	OperationType string `json:"operation_type" gorm:"size:50"`           // 操作类型：login, create_room, send_message等
	Content       string `json:"content" gorm:"type:text"`                // 操作内容
	IPAddress     string `json:"ip_address" gorm:"size:50"`               // 客户端IP地址
	UserAgent     string `json:"user_agent" gorm:"size:255"`              // 用户代理信息
	Status        string `json:"status" gorm:"size:20;default:'success'"` // 操作状态：success, failed
}

// CreateLog 创建日志记录
func CreateLog(log *Log) error {
	return GetDB().Create(log).Error
}

// GetUserLogsByTimeRange 根据用户ID和时间范围查询日志
func GetUserLogsByTimeRange(userID int, startTime, endTime time.Time) ([]Log, error) {
	var logs []Log
	err := GetDB().Where("user_id = ? AND created_at BETWEEN ? AND ?", userID, startTime, endTime).Order("created_at DESC").Find(&logs).Error
	return logs, err
}

// GetSystemLogsByTimeRange 查询系统日志（user_id=0）
func GetSystemLogsByTimeRange(startTime, endTime time.Time) ([]Log, error) {
	var logs []Log
	err := GetDB().Where("user_id = 0 AND created_at BETWEEN ? AND ?", startTime, endTime).Order("created_at DESC").Find(&logs).Error
	return logs, err
}
